import { contextBridge, ipcRenderer } from 'electron';
import { electronAPI } from '@electron-toolkit/preload';
// 导入加密和完整性检查工具

// 自定义渲染器 API
const api = {
  createBrowserView: async (url, partition) => ipcRenderer.invoke('create-browser-view', url, partition),
  switchBrowserView: (index) => ipcRenderer.send('switch-browser-view', index),
  removeBrowserView: (index, oldArr) => ipcRenderer.send('remove-browser-view', index, oldArr),
  loadTabs: async () => ipcRenderer.invoke('load-tabs'), // 新增：让前端可以获取存储的 tabs
  sessionChanged: (localStorageData, sessionStorageData) =>
    ipcRenderer.send('session-changed', localStorageData, sessionStorageData), // 监听会话变化并传递数据
  loginStatusChanged: (isLoggedIn) => ipcRenderer.send('login-status-changed', isLoggedIn), // 通知主进程登录状态变化
  getMacAddress: async () => ipcRenderer.invoke('get-mac-address'), // 获取MAC地址
  checkMacAuthorization: async () => ipcRenderer.invoke('check-mac-authorization'), // 检查MAC地址授权状态
  saveTabs: async (tabArr) => ipcRenderer.invoke('save-tabs', tabArr), // 保存标签页信息
  // WhatsApp消息监听相关API
  startMessageMonitoring: (tabIndex, urlIndex) => ipcRenderer.send('start-message-monitoring', tabIndex, urlIndex), // 开始监听WhatsApp消息
  stopMessageMonitoring: (tabIndex, urlIndex) => ipcRenderer.send('stop-message-monitoring', tabIndex, urlIndex), // 停止监听WhatsApp消息
  updateMessageStatus: (hasNewMessage, tabIndex, urlIndex, count = 0) =>
    ipcRenderer.send('update-message-status', hasNewMessage, tabIndex, urlIndex, count), // 更新消息状态
  onNewMessage: (callback) => ipcRenderer.on('new-message', callback), // 监听新消息事件
  onMessageStatusCleared: (callback) => ipcRenderer.on('message-status-cleared', callback), // 监听消息状态清除事件
  clearNewMessage: (tabIndex, urlIndex) => ipcRenderer.send('clear-new-message', tabIndex, urlIndex), // 清除新消息状态
  // 未读消息数量更新事件
  onUnreadCountUpdate: (callback) => ipcRenderer.on('update-unread-count', callback), // 监听未读消息数量更新事件
  // 调试工具
  debugViews: async () => ipcRenderer.invoke('debug-views'), // 获取views数组详细信息用于调试
};

// 使用 contextBridge API 向渲染器暴露 Electron API，
// 仅在启用上下文隔离时使用，否则直接添加到 DOM 全局对象。
if (process.contextIsolated) {
  try {
    contextBridge.exposeInMainWorld('electron', electronAPI);
    contextBridge.exposeInMainWorld('api', api);
  } catch (error) {
    console.error(error);
  }
} else {
  window.electron = electronAPI;
  window.api = api;
}
